// const data = {
//   msg: "ok",
//   error_info: "", // msg 错误原因
//   map_info: [
//     {
//       mapcode: "测试",
//       node: [
//         // 当前地图下的所有站点
//         {
//           name: "1", // 站点名称
//           x: 1.0, // 站点 x 坐标
//           y: 2.0, // 站点 y 坐标
//           angle: 1.57, // 重定位点角度(弧度)当 relocate_pos == 1 时有效
//           relocate_pos: 0 // 是否为重定位点 0:否 1:是
//         },
//         {
//           name: "2", // 站点名称
//           x: 1.0,
//           y: 2.0,
//           angle: 1.57,
//           relocate_pos: 0
//         }
//       ],
//       path: [
//         {
//           control_1_x: 1.0, // 曲线控制点 1 的 x 坐标
//           control_1_y: 2.0, // 曲线控制点 1 的 y 坐标
//           control_2_x: 1.57, // 注意：这里可能是个错误，应为 y 坐标的对应 x 值，但这里给了另一个 x 值
//           control_2_y: 0, // 注意：这里可能是个错误，应为 x 坐标的对应 y 值，但这里给了 0，可能是意图表示另一个 y 值
//           direction: 0, // 路径方向 0:单向直线 1:双向异向直线 2:双向同向直线 3:单向曲线 4:双向异向曲线 5:双向同向曲线
//           goal_name: "2", // 路径终点
//           start_name: "1", // 路径起点
//           path_name: "L1", // 路径名称
//           forward_path_angle: -1.57, // 路径方向, 单位弧度
//           reverse_path_angle: 0.2 // 非必须, 双向路径反向方向, 单位弧度
//         }
//       ]
//     }
//   ]
// };


const directionMap = new Map([
    [0, 1],
    [1, 2],
    [2, 2],
    [3, 1],
    [4, 2],
    [5, 2]
])

const linetypeMap = new Map([
    [0, 0],
    [1, 0],
    [2, 0],
    [3, 3],
    [4, 3],
    [5, 3]
])

export default function convertData(inputData, mapId) {
    const { data } = inputData;

    // 解析站点数据
    const stationList = data.map_info.reduce((acc, map) => {
        return acc.concat(
            map.node.map((node, index) => ({
                id: index, // 假设站点 ID 是索引
                name: node.name,
                x: Number(node.x),
                y: Number(node.y),
                status: 1, // 状态
                note: "", // 备注
                sort: index, // 排序

                type: 0, // 类型
                mapid: mapId,
                // parentid: 0, // 假设父 ID 总是 0
                // agvid: 0, // 假设 agvid 总是 0
                angle: Number(node.angle)
            }))
        );
    }, []);

    // 解析路段数据
    const roadList = data.map_info.reduce((acc, map) => {
        return acc.concat(
            map.path.map((path, index) => ({
                no: index, // 假设路径 ID 是索引
                roadname: `${path.start_name} - ${path.goal_name}`,
                startstation: path.start_name,
                endstation: path.goal_name,
                status: 1, // 状态
                note: "", // 备注
                direction: directionMap.get(path.direction), // 单向=1，双向=2
                linetype: linetypeMap.get(path.direction), // 0：直线  1：凹弧线  2：凸弧线  3：贝塞尔曲线
                angle: path.forward_path_angle, // 假设使用 forward_path_angle
                assistList: [
                    { x: path.control_1_x, y: path.control_1_y },
                    { x: path.control_2_x, y: path.control_2_y }
                ],
                mapid: mapId,
                oldid: index,
                detailList: [
                    {
                        startstation: path.start_name,
                        endstation: path.goal_name,
                        status: 1, // 状态
                        note: "", // 备注
                        speedlevel: "middle", // 行驶速度
                        direction: directionMap.get(path.direction), // 单向=1，双向=2
                    }
                ]
            }))
        );
    }, []);

    return {
        mapId: mapId,
        stationList: stationList,
        roadList: roadList
    };
}
